class BeneficioController {

    int total = 0;

    def index = {
        redirect(action: "create", params: params)
    }

    def create = {
        if(!verificaLogon()){
            return;
        }                
        params.max = Math.min(params.max ? params.int('max') : 10, 100)
        return [beneficioInstanceList: Beneficio.list(params), beneficioInstanceTotal: Beneficio.count(), beneficioInstance: new Beneficio()]
       
    }

    def save = {
        if(!verificaLogon()){
            return;
        }
        def beneficioInstance     = new Beneficio(params)
        def beneficioInstanceList = Beneficio.findAll();

        if(beneficioInstanceList){
            total = beneficioInstanceList.count();
        }

        if (beneficioInstance.save(flush: true)) {
            flash.message = "Dados cadastrados com sucesso!";
            redirect(action: "create");
        }
        else
        {
            render(view:"create",model: [beneficioInstance     : beneficioInstance,
                                         beneficioInstanceList : beneficioInstanceList,
                                         beneficioInstanceTotal: total]);
        }
    }

    def edit = {
        if(!verificaLogon()){
            return;
        }
        def beneficioInstance     = Beneficio.get(params.id)
        def beneficioInstanceList = Beneficio.findAll();

        if(beneficioInstanceList){
            total = beneficioInstanceList.count();
        }

        if (!beneficioInstance) {
            flash.message="Benefício não encontrado!";
            redirect(action: "create");
        }
        else
        {
            return [beneficioInstance     : beneficioInstance,
                    beneficioInstanceList : beneficioInstanceList,
                    beneficioInstanceTotal: total];
        }
    }

    def update = {
        if(!verificaLogon()){
            return;
        }
        def beneficioInstance     = Beneficio.get(params.id)
        def beneficioInstanceList = Beneficio.findAll();

        if(beneficioInstanceList){
            total = beneficioInstanceList.count();
        }
        beneficioInstance.properties = params;
        if (beneficioInstance.save())
        {
            flash.message = "Dados alterados com sucesso.";
            redirect(action: "create");
        }
        else
        {
            render(view:"edit",model: [beneficioInstance     : beneficioInstance,
                                       beneficioInstanceList : beneficioInstanceList,
                                       beneficioInstanceTotal: total]);
        }
    }

    def delete = {
        if(!verificaLogon()){
            return;
        }
        def beneficioInstance = Beneficio.findById(params.id)

        if (beneficioInstance) {
            try {
                beneficioInstance.delete(flush: true)
                flash.message = "Registro excluido com sucesso!"
            }
            catch (org.springframework.dao.DataIntegrityViolationException e) {
                flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'beneficio.label', default: 'Estado'), beneficioInstance.descricao])}"
            }
        }
        else {
            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'beneficio.label', default: 'Estado'), beneficioInstance.descricao])}" //params.id
        }
        redirect(action: "create")
    }


    /*
     * Método que verifica se o usuário está logado.
     * Se não estiver logado é redirecionado para home
     */
    private boolean verificaLogon() {
        if(!session["pessoa"]){
            flash.message = "Você precisa estar logado para acessar esta página.";
            redirect(controller:'login', action:'auth');
            return false;
        }

        return true;
    }

}
